import Vue from 'vue'
import Router from 'vue-router'
//使用路由插件
Vue.use(Router)

//引入layout组件
//一级路由出口中匹配layout路由组件
import Layout from '@/layout'

//静态路由
//本项目将路由分成两大模块：静态路由、动态路由
//静态路由：所有用户都可以访问，不需要权限
//动态路由：需要权限，如果有权限就可以访问，没有权限不可以访问
//路由规则：就是一个对象
//  path: '/redirect',访问的url 
// component：Layout，访问出口中放什么组件 在一级路由中放Layout组件
// hidden：true 隐藏 在侧边栏中不能看到声明式导航
// children：二级路由[ 配置二级路由]
export const constantRoutes = [
  {
    path: "/redirect",
    component: Layout,
    meta: { hidden: true },
    children: [
      {
        path: "/redirect/:path(.*)",
        component: () => import("@/views/redirect/index.vue"),
      },
    ],
  },
  
  {
    path: "/login",
    name: "登录",
    hidden: true,
    component: () => import("@/views/login/index.vue"),
    meta: {
      hidden: true,
    },
  },
  {
    path: "",
    component: Layout,
    redirect: "/index",
    children: [
      {
        path: "/index",
        component: () => import("@/views/home/index.vue"),
        name: "Index",
        meta: { title: "首页", icon: "dashboard", affix: true },
      },
    ],
  },
]

/**
 * asyncRoutes
 * the routes that need to be dynamically loaded based on user roles
 */
//动态路由
//权限：不同用户登录到系统看到的侧边栏不一样的，也就是有不同的页面
//      同一个页面有的用户可以访问，有的用户能访问
//背后还有很多代码
export const asyncRoutes = [
]

//创建路由对象
const createRouter = () => new Router({
  scrollBehavior: () => ({ y: 0 }),
  routes: constantRoutes
})

const router = createRouter()

export function resetRouter() {
  const newRouter = createRouter()
  router.matcher = newRouter.matcher // reset router
}

export default router
